绿联DX4600 Pro安装一个超酷超帅的Docker


绿联Nas的系统真是一言难尽,所以最近几天我都在寻找一种安装群晖的教程,也知晓群晖其实也没那么容易安装,主要是安装群晖后,有很大的概率导致机器指示灯,风扇,甚至M.2固态失效,也正因为此,虽然已经整理好了安装的教程,但迟迟没有动手,此次在网上搜寻教程时无意中发现了一个超酷超帅的Docker镜像,安装后真的会惊叹为何会有如此棒的东西,它就是

kroese/virtual-dsm ,一个利用Docker管理群晖虚拟机的镜像,对于没有虚拟机功能的绿联Nas来说,无疑是非常棒地既可以体验本地群晖系统,又不用刷机改引导,格式化硬盘的方法

安装教程

安装流程和之前的已有的一篇文章相差不大 绿联DX4600安装docker黑群晖

当然这里也会写上部分我自己特别折腾的记录,大家可以放心食用

下载镜像

打开绿联Docker,输入 kroese/virtual-dsm 下载镜像

使用ssh登录到后台

其中登录教程在我之前的一篇文章中有介绍 绿联DX4600 Pro禁用迅雷和中国移动云盘进程

这里就再简单介绍一下:

  1. 开启远程协助,记住验证码

  2. 重启机器(注意先保存进行中的任务)

  3. 使用 ssh 客户端登录,端口 922,密码 L#W$%W1uGa 加上验证码,用户 root

使用Docker命令行安装

首先需要验证挂载的目录,我这里是找了两个已经创建并挂载了本地存储的镜像,使用

docker inspect --format "{{json .HostConfig.Mounts}}" 镜像名

查看挂载的实际目录,可以看出Docker实际挂载的目录由

/mnt/media_rw/ + 硬盘UUID + /.ugreen_nas/ + 用户ID + 硬盘目录

这几部分构成,那么就好办了,首先创建一个DSM的目录,用于存放群晖虚拟机文件,我这里选择固态硬盘,避免使用机械硬盘导致硬盘无法休眠,如果选择其它硬盘,需要先创建一个没什么用的Docker挂载目录,然后使用 inspect 找到实际的路径

建立好目录后使用命令行安装镜像

其中的几个参数

  • DISK_SIZE=100G: 分配给群晖虚拟机100G的磁盘空间,这部分空间会作为存储1使用

  • ALLOCATE=N: 是否预分配100G的大小(Y),还是按照实际大小展示在绿联Nas上(N)(这个参数貌似没生效)

  • CPU_CORES=2: 分配给虚拟机的核数,我的是 n6005,四核,所以分了两核给群晖

  • RAM_SIZE=8192M: 分配给虚拟机的内存大小

  • --network 实际的网络: 也可以不写,使用默认的 Docker bridge

创建完成后使用 docker logs -f DSM 查看日志,直到日志显示

在此期间,也可以打开浏览器,使用绿联Nas IP+端口5000 进行访问

然后就是正常的群晖初始化,至此,想要体验本地群晖系统的就可以行动了

等等,后面还有。。。

折腾教程

群晖本地IP(macvlan)

按照GitHub上的教程,我原本想要配置一个和局域网内其它设备相同网段的IP给群晖虚拟机,所以我创建了一个基于 macvlan 的网络

docker network create -d macvlan --subnet=192.168.31.0/24 --gateway=192.168.31.1 --ip-range=192.168.31.66/32 -o parent=eth0  dsmnet

然后使用 --network dsmnet 重新创建Docker,结果怎么着,报错了

docker: Error response from daemon: failed to create the macvlan port: operation not supported.

第一眼我还觉得这是由于docker打包脚本里的 EXPOSE 的锅,甚至去搜索能否禁用该操作,结果也是显而易见的,什么都没找到。后来仔细看了一下报错信息:operation not supported 好吧,确认一下 macvlan 相关的模块是否被加载

lsmod | grep macvlan

果然,绿联Nas默认是没有macvlan模块的,所以想用绿联Nas部署一个openwrt旁路由的可以先歇了。那么,我能否自己安装macvlan模块呢?

对不起,打扰了。不对,内核版本不符,那么我去下载一个和内核版本相符的文件,使用 uname -r 看一下绿联用的版本

5.10.120

我直接去官方库里找,还好找到了,同样使用的 5.10.120-1

wget https://downloads.openwrt.org/releases/22.03.0-rc4/targets/x86/64/packages/kmod-macvlan_5.10.120-1_x86_64.ipk

继续安装,结果还是一样 因为我对openwrt不太熟悉,实在进行不下去了,只好放弃。不过也能看出绿联还是编译了一些属于自己的东西的,没有直接使用默认的openwrt内核,不过现在大概只能等绿联自己升级固件来默认支持macvlan了,或者有没有大佬能够解答一下这个问题

webdav挂载

因为docker安装的群晖无法直接使用插入的硬盘,甚至不能映射某个目录到群晖虚拟机,所以如果想用群晖来操作绿联Nas上面的文件,只能通过网络挂载

绿联本身支持的网络挂载有限,不支持NFS,但是还好可以支持webdavftp,那么可以去群晖web管理界面,打开 file station -> 工具 -> 远程连接 -> 连接设置 -> ftp/webdav 进行配置

你以为我要说的就这,这不是显而易见,浅显易懂,入口即化的吗?实际上,除了ftp可以正常挂载外,webdav却是死活挂载不了,总是提示连接被服务器拒绝,搞得我还以为绿联是不是连一个基础的webdav都没做好,但我用我的mac连接又可以正常挂载,差点把我整emo

我可以确认我的配置是对的,那到底是哪里出了问题,打开群晖的ssh,也确认了是可以正常和宿主机通信的

最后搞得实在没办法了,抓包吧,还好群晖默认已经安装了tcpdump,只需要生成pcap文件就行

tcpdump -i eth0 host 192.168.31.65 -w ugreen/webdav.pcap

终端运行抓包命令,另一边在群晖界面进行添加webdav的操作,等待再次提示连接被服务器拒绝后,再等待5s,暂停抓包,然后把 webdav.pcap 下载到本地,使用 wireshark 查看

乍一看没什么问题,都是正常的DNS查询TCP握手,可仔细一看,怎么会多了一个斜杆,而且服务端返回了401错误

原来群晖挂载webdav的路径一定不能使用斜杆开头一定不能使用斜杆开头一定不能使用斜杆开头,重要的事情说三遍,需要把 /dav/share/ 改成 dav/share/ (注意,绿联webdav路径后必须有一个斜杆)

至此,webdav挂载也ok了

其它

  1. 在使用 非macvlan 网络创建的群晖系统里内置的 IP 20.20.20.21 以及 网关20.20.20.1 是不能修改的,修改后可能会导致无法从浏览器访问群晖

  2. 可以修改DNS服务为局域网网关或者自建DNS的IP,修改后记得重启群晖系统

  3. 功耗,启动 virtual-dsm 前我的机器功耗大概是18W,启动后在26W左右,一段时间后又会变成19W,这应该和系统内运行的任务有关

作者: honmaple
链接: https://honmaple.me/articles/2023/07/绿联DX4600 Pro安装一个超酷超帅的Docker.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论